// 商品模型
const { Goods, validateGoods } = require('../../../models/good');
// 店铺模型
const { Store } = require('../../../models/store');
// 统一数据返回类
const { DataReturn } = require('../../../common/returnclass');

/**
 * @api {Post} /goods 添加商品
 * @apiGroup Admin-Goods
 *
 * @apiParam {String} goods_cate  商品分类id
 * @apiParam {String} goods_dy_attr  动态参数
 * @apiParam {Array} goods_imgs  商品图片
 * @apiParam {String} goods_msg_price  商品销售价
 * @apiParam {String} goods_name  商品名称
 * @apiParam {String} goods_number  商品数量
 * @apiParam {String} goods_price  商品价格
 * @apiParam {String} goods_static_attr  静态参数
 * @apiParam {String} goods_store  商品所属店铺id
 * @apiParam {String} goods_weight  商品重量
 * @apiParam {String} goods_content  商品内容
 * 
 * @apiSuccess {ObjectId} id 商品id
 * @apiSuccess {String} goods_cate  商品分类id
 * @apiSuccess {String} goods_dy_attr  动态参数
 * @apiSuccess {Array} goods_imgs  商品图片
 * @apiSuccess {String} goods_msg_price  商品销售价
 * @apiSuccess {String} goods_name  商品名称
 * @apiSuccess {String} goods_number  商品数量
 * @apiSuccess {String} goods_price  商品价格
 * @apiSuccess {String} goods_static_attr  静态参数
 * @apiSuccess {String} goods_store  商品所属店铺id
 * @apiSuccess {String} goods_weight  商品重量
 * @apiSuccess {String} is_recommend  是否推荐
 * @apiSuccess {String} sales_volume  销售数量息
 */
module.exports = async (req, res) => {
	// console.log(req.fields);
	// 商品名称 商品价格 商品零售价 商品重量 商品分类id 商品参数 商品属性 商品图片 商品内容 是否热门推荐
	let {
		goods_name,
		goods_number,
		goods_price,
		goods_msg_price,
		goods_weight,
		goods_cate,
		goods_dy_attr,
		goods_static_attr,
		goods_imgs,
		goods_content,
		goods_store
	} = req.fields;
	
	
	// 数据格式校验
	const { error } = validateGoods(req.fields);
	// 格式不符合要求
	if (error) return DataReturn.getData(res,400,[],error.message);
	
	// 创建商品对象
	let goods = new Goods(req.fields);
	// 保存商品信息
	goods.save()
	.then(async()=>{
		return await Store.updateOne({ _id: goods_store } , { $push: { store_goods: goods_store } } , { multi: false })
	}).then(()=>{
		DataReturn.getData(res,200,goods,'添加商品成功')
	}).catch(()=>{
		DataReturn.getData(res,400,[],'添加商品失败')
	})

}
